/*将后端返回的list集合转换成树形结构*/
export function listToTree(list) {
    const map = {} // 用于存储节点 id 与节点的映射关系
    const tree = [] // 树的根节点
    // 首次遍历，将节点 id 与节点进行映射
    list.forEach(node => {
        map[node.id] = { ...node, children: [] }
    })
    // 第二次遍历，构建树结构
    list.forEach(node => {
        if (node.pid) {
            // 如果存在父级节点，则将当前节点添加到父级节点的子节点列表中
            map[node.pid].children.push(map[node.id])
        } else {
            // 否则，将当前节点作为根节点
            tree.push(map[node.id])
        }
    })
    return tree
}


// 将树形结构的数据  传入函数转换成 路由结构
export function generateRouter (data) {
    let newRoutes = data.map(r => {
        let routes = {
            path: r.path,
            name: r.name,
            meta:{title:r.title},
            component: () => import(`@/views/${r.name}/${r.component}`)
        }
        if (r.children) {
            routes.children = generateRouter(r.children)
        }
        return routes
    })
    return newRoutes
}

